# 使用拖放控件
from PyQt5 import QtCore, QtWidgets, QtGui
from QtUI06 import window_drag
import sys


class MainWindow(object):
    def __init__(self):
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        self.ui = window_drag.Ui_MainWindow()
        self.ui.setupUi(MainWindow)

        self.ui.pushButton.hide()
        self.pushButton = DragDropButton("拖放按钮", MainWindow)
        self.ui.gridLayout.addWidget(self.pushButton, 0, 1, 1, 2)

        MainWindow.show()
        sys.exit(app.exec_())


# 创建一个DragDropButton()类，用来处理按钮的拖放
class DragDropButton(QtWidgets.QPushButton):

    def __init__(self, text, parent):
        super().__init__(text, parent)  # super().__init__()等同于super(A, self).__init__()
        self.setAcceptDrops(True)  # 使用setAcceptDrops属性设置按钮接收拖放事件

    # 创建一个dragEnterEvent()方法用来设置拖的事件响应
    def dragEnterEvent(self, event):
        if event.mimeData().hasFormat('text/plain'):
            event.accept()
        else:
            event.ignore()

    # 创建一个dropEvent()方法用来设置放的事件响应
    def dropEvent(self, event):
        self.setText(event.mimeData().text())


if __name__ == "__main__":
    MainWindow()
